home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 October: Mac OS SDK / Dev.CD Oct 96 SDK / Dev.CD Oct 96 SDK2.toast / Development Kits (Disc 2) / OpenDoc Development Framework / ODFDev / Table / Sources / Commands.h < prev    next >
Encoding:
Text File  |  1996-08-16  |  7.6 KB  |  265 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                TblCmds.h
  4. //    Release Version:    $ ODF 1 $ 
  5. //
  6. //    Copyright:            (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
  7. //
  8. //========================================================================================
  9.  
  10. #ifndef COMMANDS_H
  11. #define COMMANDS_H
  12.  
  13. #ifndef CELL_H
  14. #include "Cell.h"
  15. #endif
  16.  
  17. // ----- Framework Includes -----
  18.  
  19. #ifndef FWDRCMD_H
  20. #include "FWDrCmd.h"
  21. #endif
  22.  
  23. #ifndef FWCLPCMD_H
  24. #include "FWClpCmd.h"
  25. #endif
  26.  
  27. #ifndef FWINSCMD_H
  28. #include "FWInsCmd.h"
  29. #endif
  30.  
  31. //========================================================================================
  32. // Forward class declarations
  33. //========================================================================================
  34.  
  35. class CTableFrame;
  36. class CTablePart;
  37. class FW_CPresentation;
  38. class CTableSelection;
  39. class CTableProxy;
  40. class CTableLinkSource;
  41. class CTableLink;
  42. class CTableContent;
  43.  
  44. //========================================================================================
  45. //    class CCellDragCommand
  46. //========================================================================================
  47.  
  48. class CCellDragCommand : public FW_CDragCommand
  49. {
  50.   public:
  51.   
  52.       FW_DECLARE_AUTO(CCellDragCommand)
  53.     
  54.     CCellDragCommand(Environment* ev,
  55.                      CTableContent* tableContent,
  56.                      FW_CFrame* frame,
  57.                      CTableSelection* selection);
  58.  
  59.     virtual ~ CCellDragCommand();
  60.  
  61.     // --- FW_CCommand overrides for Undo/Redo ---
  62.     virtual void        UndoIt(Environment* ev);    // Override
  63.     virtual void        RedoIt(Environment* ev);    // Override
  64.     virtual void        SaveUndoState(Environment* ev);    // Override
  65.     virtual void        FreeUndoState(Environment* ev);    // Override
  66.  
  67.   private:
  68.     CTableContent*        fTableContent;
  69.     CTableSelection*    fTableSelection;
  70.     CTableProxy*        fSavedProxy;    // saved selection for redo
  71.     CCell                fDragCell;
  72. };
  73.  
  74. //========================================================================================
  75. //    class CCellDropCommand
  76. //========================================================================================
  77.  
  78. class CCellDropCommand : public FW_CDropCommand
  79. {
  80.   public:
  81.   
  82.       FW_DECLARE_AUTO(CCellDropCommand)
  83.     
  84.     CCellDropCommand(Environment* ev,
  85.                      CTablePart* itsPart,
  86.                      CTableContent* tableContent,
  87.                      CTableFrame* frame,
  88.                      ODDragItemIterator* dropInfo, 
  89.                      ODFacet* odFacet,
  90.                      const FW_CPoint& dropPoint,
  91.                      const CCell& dropCell,
  92.                      const CCell& draggedCell);
  93.  
  94.     virtual ~ CCellDropCommand();
  95.  
  96.     // --- FW_CDropCommand overrides
  97.     virtual FW_Boolean DoDrop(Environment* ev, 
  98.                             ODStorageUnit* dropSU, 
  99.                             const FW_CPoint& mouseDownOffset,
  100.                             const FW_CPoint& dropPoint,
  101.                             FW_Boolean isDropMove,
  102.                             short itemNumber);
  103.     virtual FW_Boolean DoDroppedInSameFrame(Environment* ev, 
  104.                             ODStorageUnit* dropSU, 
  105.                             const FW_CPoint& mouseDownOffset, 
  106.                             const FW_CPoint& dropPoint);
  107.  
  108.     // --- FW_CCommand overrides for Undo/Redo ---
  109.     virtual void        UndoIt(Environment* ev);    // Override
  110.     virtual void        RedoIt(Environment* ev);    // Override
  111.     virtual void        SaveRedoState(Environment* ev);    // Override
  112.     virtual void        FreeRedoState(Environment* ev);    // Override
  113.  
  114.   private:
  115.     CTablePart*            fTablePart;
  116.     CTableContent*         fTableContent;
  117.     CTableFrame*        fTableFrame;
  118.     CCell                fDropCell;
  119.     CCell                fDraggedCell;
  120.     CTableProxy*        fSavedProxy;    // saved selection for undo/redo
  121. };
  122.  
  123. //========================================================================================
  124. //    class CTableInsertCommand
  125. //========================================================================================
  126.  
  127. class CTableInsertCommand : public FW_CInsertCommand
  128. {
  129.   public:
  130.   
  131.       FW_DECLARE_AUTO(CTableInsertCommand)
  132.  
  133.     CTableInsertCommand(Environment* ev,
  134.                         FW_CEmbeddingFrame* frame,
  135.                         const FW_PFileSpecification& fileSpec,
  136.                         CTablePart* itsPart,
  137.                         const CCell& insertCell);
  138.     virtual ~CTableInsertCommand();
  139.  
  140.     // --- FW_CCommand overrides
  141.     virtual void        UndoIt(Environment* ev);        // Override
  142.     virtual void        RedoIt(Environment* ev);        // Override
  143.     virtual void        CommitUndone(Environment* ev);    // Override
  144.     virtual void        SaveRedoState(Environment* ev);    // Override
  145.  
  146.   private:
  147.     CTablePart*            fTablePart;
  148.     CTableContent*         fTableContent;
  149.     CTableProxy*        fInsertedProxy;    // saved proxy for Redo
  150.     CCell                fInsertCell;
  151. };
  152.  
  153. //========================================================================================
  154. // CLASS CTableEditCommand
  155. //========================================================================================
  156.  
  157. class CTableEditCommand : public FW_CClipboardCommand
  158. {
  159. //----------------------------------------------------------------------------------------
  160. //    Initialization/Destruction
  161. //
  162.   public:
  163.   
  164.       FW_DECLARE_AUTO(CTableEditCommand)
  165.     
  166.     CTableEditCommand(Environment* ev,
  167.                       ODCommandID id,
  168.                       CTablePart* itsPart,
  169.                       CTableContent* tableContent,
  170.                       FW_CFrame* frame,
  171.                       CTableSelection* selection);
  172.  
  173.     virtual ~ CTableEditCommand();
  174.  
  175. //----------------------------------------------------------------------------------------
  176. //    FW_CCommand overrides for Undo/Redo
  177. //
  178.     virtual void            UndoIt(Environment* ev);    // Override
  179.     virtual void            RedoIt(Environment* ev);    // Override
  180.     virtual void            SaveUndoState(Environment* ev);    // Override
  181.     virtual void            SaveRedoState(Environment* ev);    // Override
  182.     virtual void            FreeUndoState(Environment* ev);    // Override
  183.     virtual void            FreeRedoState(Environment* ev);    // Override
  184.     
  185. //----------------------------------------------------------------------------------------
  186. //    Table-specific
  187. //
  188.     //---- Undo PasteAs support ----
  189.     void                     UndoPasteAs(Environment* ev);
  190.     void                     RedoPasteAs(Environment* ev);
  191.  
  192.   private:
  193.     void SaveSelection(Environment* ev);
  194.     void RemoveSelection(Environment* ev);
  195.     void RestoreSelection(Environment* ev);
  196.     void DeleteSavedProxy(Environment* ev);
  197.  
  198.     FW_Boolean WasLinkCreated(Environment* ev);
  199. //----------------------------------------------------------------------------------------
  200. //    Data Members
  201. //
  202.   private:
  203.     CTablePart*            fTablePart;
  204.     CTableContent*         fTableContent;
  205.     CTableSelection*    fTableSelection;
  206.     CTableProxy*        fSavedProxy;        // saved selection for undo/redo
  207.     CCell                fPasteAsCell;        // saved cell for Undo PasteAs
  208. };
  209.  
  210. //========================================================================================
  211. // CLASS CBreakLinkSourceCommand - break a source link (undoable)
  212. //========================================================================================
  213.  
  214. class CBreakLinkSourceCommand : public FW_CCommand
  215. {
  216. public:
  217.   
  218.       FW_DECLARE_AUTO(CBreakLinkSourceCommand)
  219.     
  220.     CBreakLinkSourceCommand(Environment* ev,
  221.                             FW_CFrame* frame,
  222.                             CTableLinkSource* linkSource);
  223.  
  224.     virtual ~CBreakLinkSourceCommand();
  225.  
  226.     virtual void DoIt(Environment* ev);        // Override
  227.     virtual void UndoIt(Environment* ev);    // Override
  228.     virtual void RedoIt(Environment* ev);    // Override
  229.  
  230.     virtual void CommitDone(Environment* ev);    // Override
  231.  
  232.   private:
  233.     CTableLinkSource*    fLinkSource;    // source link to be broken
  234. };
  235.  
  236.  
  237. //========================================================================================
  238. // CLASS CBreakLinkCommand - break a destination link (undoable)
  239. //========================================================================================
  240.  
  241. class CBreakLinkCommand : public FW_CCommand
  242. {
  243.   public:
  244.   
  245.       FW_DECLARE_AUTO(CBreakLinkCommand)
  246.     
  247.     CBreakLinkCommand(Environment* ev,
  248.                       FW_CFrame* frame,
  249.                       CTableLink* linkDestination);
  250.  
  251.     virtual ~CBreakLinkCommand();
  252.  
  253.     virtual void DoIt(Environment* ev);        // Override
  254.     virtual void UndoIt(Environment* ev);    // Override
  255.     virtual void RedoIt(Environment* ev);    // Override
  256.  
  257.     virtual void CommitDone(Environment* ev);    // Override
  258.  
  259.   private:
  260.     CTableLink*        fLink;    // destination link to be broken
  261. };
  262.  
  263.  
  264. #endif
  265.